package route

import (
	"github.com/gin-gonic/gin"
	"shorturl/controller"
	"shorturl/model"
)

// BackAuth 验证token
func BackAuth() gin.HandlerFunc {
	return func(c *gin.Context) {
		token := c.Request.Header.Get("token")
		if token == "" {
			c.JSON(200, gin.H{
				"code": 401,
				"msg":  "未登录或非法请求",
			})
			c.Abort()
			return
		}

		adminUser := model.User{}
		admin, _ := adminUser.GetUserByToken(token)

		if admin == nil || admin.Id == 0 {
			c.JSON(200, gin.H{
				"code": 401,
				"msg":  "未登录或登录已过期",
			})
			c.Abort()
			return
		}

		// 设置当前登录管理员id
		c.Set("admin_user_id", admin.Id)
		c.Next()
	}
}

func ApiRouter(r *gin.Engine) {

	// 短连接主入口
	r.GET("/:id", controller.AccessController{}.Record)

	// 管理员未登录接口
	adminNotLogin := r.Group("/api")
	{
		adminNotLogin.POST("/user/login", controller.UserController{}.Login) // 管理用户登录
	}

	// 管理员登录接口
	adminIsLogin := r.Group("/api").Use(BackAuth())
	{
		//adminIsLogin.GET("/analyze/count", controller.AnalyController{}.CountData) // 统计数据
		//adminIsLogin.GET("/analyze/user", controller.AnalyController{}.NewUser)    // 新增用户
		//adminIsLogin.GET("/analyze/money", controller.AnalyController{}.PayMoney)  // 支付金额

		adminIsLogin.POST("/user", controller.UserController{}.Add)           // 添加员工
		adminIsLogin.DELETE("/user", controller.UserController{}.Delete)      // 删除员工
		adminIsLogin.PUT("/user", controller.UserController{}.Update)         // 编辑员工
		adminIsLogin.GET("/user", controller.UserController{}.Index)          // 查询员工
		adminIsLogin.PUT("/user/profile", controller.UserController{}.Change) // 更新密码

		adminIsLogin.GET("/link", controller.LinkController{}.Index)     // 查询链接
		adminIsLogin.POST("/link", controller.LinkController{}.Add)      // 添加链接
		adminIsLogin.PUT("/link", controller.LinkController{}.Update)    // 编辑链接
		adminIsLogin.DELETE("/link", controller.LinkController{}.Delete) // 删除链接

		adminIsLogin.GET("/access", controller.AccessController{}.Index) // 查询日志
	}
}
